System for distributing objects to multiple clients

ABSTRACT

A method for updating a set of presentation images through a single-buffered multipoint dispatcher over a network to multiple clients is provided. Each screen of a set of screens included in the presentation is divided into tiles. Packets respectively corresponding to the tiles of a first screen are stored in a single buffered multipoint dispatcher according to a time sorted hierarchy, a top packet having a most recent time value and a bottom packet having a least recent time value. Each tile of the first screen is compared with a corresponding tile of a second screen to identify any non-matching tile pairs. For each non-matching tile of the second screen, a packet corresponding to that non-matching tile is provided to the single buffered multipoint dispatcher. Then, non-matching tiles of the first screen are replaced with the respective non-matching tiles of the second screen, while maintaining the time sorted hierarchy. Such replacement supports clients with different connection speeds at different frame rates.

CONTINUING APPLICATION DATA

This application is a divisional of, and claims priority under 35 U.S.C.§§ 120 and 121 on, U.S. patent application Ser. No. 10/185,834 filedJun. 27, 2002, the contents of which is incorporated by reference hereinin its entirety.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates generally to data transmission systems and moreparticularly to a method for dispatching updates to objects in apre-defined set.

2. Description of the Related Art

With the widespread adoption of the Internet, more applications arebecoming prevalent to disperse information over distributed networks.Multiple computers each having different capacity constraints arecommunicating with each other over these distributed networks. Forexample, as video conferencing becomes more popular the distribution ofa presentation or video to multiple clients will naturally involvedifferent computers with varying characteristics. As is generally known,the data is typically distributed in the form packets to each of theclients. The systems supporting multicasting, where a server sends datato multiple clients, such as for videoconferencing, include a modulecapable of distributing packets to a defined set of clients referred toas a multipoint dispatcher.

FIG. 1 is a simplified schematic of a multipoint dispatcher. Multipointdispatcher 100 receives tiles from presentation capturing process 102.Presentation capturing process 102 is a process in which each of theclients is sent updated portions of a presentation, such as a slide showbeing video-conferenced. Thus, where only a portion of a slide changesbetween consecutive slides of the slideshow, only the changed portion ofthe slides is sent to each of the clients. For example, a certain tile,i.e., tile X which is a subset of the entire image, may differ from tileX of the previous capture. The packet containing tile X is dispatched toeach of the clients wherein the client combines the tiles to reconstructthe original image.

The multipoint dispatcher manages the incremental disbursement of thechanged portion of the slides. FIG. 2 is a simplified schematic of abuffer-less multipoint dispatcher configured to dispatch a new packet tothree clients. Here new packet 104 is received by multipoint dispatcher100 and distributed to clients 1-3. While a buffer-less multipointdispatcher requires minimal memory resources and is easy to implement,the buffer-less multipoint dispatcher can only successfully serve astatic set of clients that have sufficient bandwidth to keep up with theincoming packets. As the delivery is synchronous, each client has to befast or the entire system will stall. In addition, each client will haveto support the maximum speed of incoming packets. Therefore, each clientwill have to support a connection speed above the burst speed of theincoming packets since the packets can arrive in bursts.

FIG. 3 is a simplified schematic of a buffered multipoint dispatcherconfigured to distribute a received packet to three clients. Here,multipoint dispatcher 100 maintains buffers 106, 108, and 110 forclients 1-3, respectively. As new packet 104 is received, the packet isplaced at the top of each of the client queues of buffers 106, 108 and110. The packets are stored in the buffer and the packets at the bottomof the queue are sent to the respective client. Once sent, the packet isdeleted from the queue. The delivery is asynchronous as the time forsending a packet to each client is different. The buffered multipointdispatcher allows client to receive all their packets even if theclients have differing connection speeds. However, the bufferedmultipoint dispatcher is much more complex. Another shortcoming of thebuffered multipoint dispatcher is that the memory requirements increasesharply with the number of clients since each client has a dedicatedbuffer. In some instances, especially where there are a large number ofclients, the memory requirements may be prohibitive for support of sucha system.

Another shortcoming of the above described multipoint dispatchers isthat the addition of a new client is a cumbersome task. For example, aseparate memory portion of the multipoint dispatcher is reserved for theoriginal image data of the slide show or other type of presentation.This stored data is used for the initial addition of a new client, whichfurther increases the memory requirements to support the system.

As a result, there is a need to solve the problems of the prior art toprovide a method and apparatus for a multipoint dispatcher capable ofsupporting a large number of clients during a multicast operationthrough a multipoint dispatcher without requiring a large memorycapacity. Additionally, the multipoint dispatcher is configured toeasily add new clients.

SUMMARY OF THE INVENTION

Broadly speaking, the present invention fills these needs by providing amethod and system for dispatching objects to multiple clients through ashared, fixed size, single-buffer multipoint dispatcher having minimalmemory requirements. It should be appreciated that the present inventioncan be implemented in numerous ways, including as a process, a system,or a device. Several inventive embodiments of the present invention aredescribed below.

One aspect of the invention involves a method for updating a set ofimages for a presentation through a single-buffered multipointdispatcher over a network to multiple clients. Each screen of a set ofscreens included in the presentation is divided into tiles. Next,packets respectively corresponding to the tiles of a first screen arestored in a single buffered multipoint dispatcher according to a timesorted hierarchy, wherein a top packet has a most recent time value anda bottom packet has a least recent time value. Then, each tile of thefirst screen is compared with a corresponding tile of a second screen toidentify any non-matching tile pairs. Next, for each non-matching tileof the second screen, a packet corresponding to that non-matching tileis provided to the single buffered multipoint dispatcher. Then, eachpacket corresponding to a non-matching tile of the first screen isreplaced with the paired non-matching tile of the second screen, whilemaintaining the time sorted hierarchy, wherein the time sorted hierarchyis maintained during the replacing operation to support clients withdifferent connection speeds at different frame rates.

Other aspects and advantages of the invention will become apparent fromthe following detailed description, taken in conjunction with theaccompanying drawings, illustrating by way of example the principles ofthe invention.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will be readily understood by the followingdetailed description in conjunction with the accompanying drawings, andlike reference numerals designate like structural elements.

FIG. 1 is a simplified schematic of a multipoint dispatcher.

FIG. 2 is a simplified schematic of a buffer-less multipoint dispatcherconfigured to dispatch a new packet to three clients.

FIG. 3 is a simplified schematic of a buffered multipoint dispatcherconfigured to distribute a received packet to three clients.

FIG. 4 is a simplified schematic diagram of a single-buffered multipointdispatcher having three clients in accordance with one embodiment of theinvention.

FIG. 5A is a simplified schematic of a dynamic single-bufferedmultipoint (DSM) dispatcher configured to maintain the latest copycontaining each element, i.e., image tile, of the originating set inaccordance with one embodiment of the invention.

FIG. 5B is a simplified schematic diagram of the DSM dispatcher afterreceiving a new packet in accordance with one embodiment of theinvention.

FIG. 6 is a flowchart diagram of the method operations for processingpackets received by a DSM dispatcher in accordance with one embodimentof the invention.

FIG. 7A is a simplified schematic diagram of the configuration of asection of the DSM dispatcher before sending a packet to a client inaccordance with one embodiment of the invention.

FIG. 7B is a simplified schematic diagram of the configuration of asection of the DSM dispatcher after sending a packet to a client inaccordance with one embodiment of the invention.

FIG. 8 is a flowchart diagram of the method operations for sending apacket from the DSM dispatcher to a client in accordance with oneembodiment of the invention.

FIG. 9 is a simplified schematic diagram of a DSM dispatcher having abandwidth control channel in accordance with one embodiment of theinvention.

FIG. 10 is a flowchart diagram of the method operations performed by apacket serving process for maintaining an updateable set of image tileswith respect to a slideshow in accordance with one embodiment of theinvention.

FIG. 11 is a simplified schematic diagram of a dispatcher implementationdata structure incorporating a doubly-linked list in accordance with oneembodiment of the invention.

FIG. 12 is a schematic diagram of a link object data structure used forobjects of FIG. 11 in accordance with one embodiment of the invention.

FIG. 13 is a simplified schematic diagram of an exemplary configurationof a system implementing the DSM dispatcher in accordance with oneembodiment of the invention.

FIGS. 14A-14E provide exemplary schematic diagrams of how tiles fromconsecutive frames of a slideshow are received and placed into queue bythe DSM dispatcher in accordance with on embodiment of the invention.

DEFINITIONS

An “image tile” as used herein refers to a subset of an image defined byits position, size, shape and image data that belongs to it.

A “dynamic set” as used herein refers to a set in which elements can beadded or dropped at arbitrary times.

A “client” as used herein refers to a remote process with which acontrolled connection is maintained.

A “packet” as used herein refers to a data block intended for a clientand formatted in a way that is understandable by the client.

A “multipoint dispatcher” as used herein refers to a module capable ofdistributing packets to a defined set of clients.

A “burst” as used herein refers to a sequence of packets delivered at aspeed significantly above the average overall delivery speed.

A “buffer” as used herein refers to a structure that keeps objects inmemory for a temporary amount of time.

A “client pointer” as used herein refers to a client specific referenceto a packet inside a multipoint dispatcher's shared queue.

A “DSM dispatcher” as used herein refers to a dynamic, single-buffered,multipoint dispatcher for a fixed set of updateable objects.

Client latency is defined as follows:Client latency=most recent time stamp−time stamp of the packet pointedat by the client pointer.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

An invention is described for an apparatus and method for dispatchingupdates to objects in a set through a shared fixed size priority queue.It will be obvious, however, to one skilled in the art, that the presentinvention may be practiced without some or all of these specificdetails. In other instances, well known process operations have not beendescribed in detail in order not to unnecessarily obscure the presentinvention. FIGS. 1-3 are described in the “Background of the Invention”section.

The embodiments of the present invention provide a method and apparatusfor using a dynamic single-buffered multipoint dispatcher for a fixedset of updateable objects. The dynamic single-buffered multipointdispatcher is configured to reduce the memory requirements of themultipoint dispatcher and allow for slower frame rates for slowerclients, while keeping all clients up-to-date with the most recent data.By representing each client buffer as a subset of the single, sharedbuffer and by setting a fixed size for the shared buffer, separatememory structures are not necessary. In one embodiment, the multipointdispatcher is further configured to meter multiple packets, referring tothe same object, to slow clients. Thus, slow clients will not receivemultiple packets referring to the same object, i.e., the slower clientare provided a slower frame rate. In addition, the single-bufferedmultipoint dispatcher is enabled to support adding new clients withoutany assistance from the process that is sending the packets and withoutany need to store a base image. In one embodiment, a bandwidth controlprotocol is included to support slow and variable speed clients. As willbe explained in more detail below, maintaining a single queue and a listof pointers into that queue (indicating which packet is next to be sentto each user), results in each packet being queued only once regardlessof the number of clients.

FIG. 4 is a simplified schematic diagram of a single-buffered multipointdispatcher having three clients in accordance with one embodiment of theinvention. Multipoint dispatcher 120 includes shared queue 122. In oneembodiment, shared queue 122 is a first in-first out (FIFO) buffer. Asnew packet 124 is received it is placed on top of shared queue 122.Client 1 128, client 2 130, and client 3 132 are each associated withclient pointer 134, client pointer 136, and client pointer 138,respectively. Consequently, each time a packet is to be sent to aclient, the dispatcher looks up which packet the corresponding clientpointer is pointing to, and sends that packet to the correspondingclient. The client pointer is then adjusted to point to the packet abovethe packet that has been sent. For example, if client 2 130 has beensent packet d 140, then client pointer 136 is adjusted to point topacket e 142. In one embodiment, once the bottom packet has been sent toall clients, it is removed from the queue.

FIG. 5A is a simplified schematic of a dynamic single-bufferedmultipoint (DSM) dispatcher configured to maintain the latest copycontaining each element, i.e., image tile, of the originating set inaccordance with one embodiment of the invention. DSM dispatcher 150includes shared fixed size queue 152. Shared fixed-size queue 152 servesas a shared buffer and also maintains all the information necessary fora newly added client to be introduced without requiring additional datafrom the process supplying the packets. Packets A-Z are stored in sharedfixed-size queue 152. The packets inside shared fixed-size queue 152represent the latest update for all the elements in the originating set,such as with successive screens of a slideshow. As will be explained inmore detail below, the packets can represent image tiles of a videoconference multicast presentation sent to multiple clients. In thisembodiment, dispatcher 150 is in communication with client 1 156, client2 158, and client 3 160. Associated with clients 1-3 are client pointersP1-P3, respectively. Client pointers P1-P3 point to the most recentpacket in the table the respective client has received. It should beappreciated that the most recent packet the client has received is notnecessarily the last packet the client has received, since the lastpacket the client received may have been updated.

Still referring to FIG. 5A, new packet 154 is transmitted by a packetserving process in one embodiment. Here, new packet 154 represents anupdate of a packet contained in shared fixed-size queue 152. New packet154 is received by DSM dispatcher 150. For exemplary purposes, newpacket 154 is identified as an update for packet D in shared fixed-sizequeue 152. Thus, new packet 154 replaces packet D to maintain the sizeof queue 152 as will be explained in more detail below.

FIG. 5B is a simplified schematic diagram of the DSM dispatcher afterreceiving a new packet in accordance with one embodiment of theinvention. New packet 154, which is an update of packet D, is placed onthe top of queue 152 since it has the most recent time stamp, i.e., itwas introduced into the queue most recently. It should be appreciatedthat the size of the queue is maintained because the outdated packet(packet D) is replaced by new packet D 154. At the same time, DSMdispatcher 150 determines if any client pointers are affected by theaddition of the new packet to the top of queue 152 or the removal of theoutdated packet from its previous position in the queue. For example,DSM dispatcher 150 has three clients. Client 1 156 has already receivedall the packets in the queue including outdated packet D, client 3 160is due to receive outdated packet D after receiving packets F and E, andclient 2 158 has received outdated packet D but is pointing to outdatedpacket D since client 2 has yet to receive packet C.

Still referring to FIG. 5B, after new packet D 154 replaces outdatedpacket D, client 1 156 will receive new packet D next. Client 3 160 willreceive new packet D, however, packets C, B and A are received beforenew packet D is received by client 3. Client 2 is still due to receivepacket C next, but since packet D has moved client pointer P2 for client2 is moved to the next lowest packet, i.e., packet E, as packet E is themost recent packet in the queue that client 2 has received. While FIGS.5A and 5B illustrate the DSM dispatcher having 3 clients, it will beapparent to one skilled in the art that the dispatcher can interfacewith any number of suitable clients. Furthermore, additional clients caneasily be added as will be explained in more detail below.

FIGS. 5A and 5B illustrate clients 1-3 pointing to different packets.While each of the client pointers initiate at the bottom of the sharedfixed size queue 152, each of the clients will advance upward at theirown speed. It should be appreciated that the different clients may havefaster connections to the dispatcher or the client computers themselvescan have different operating speeds. Thus, in FIGS. 5A and 5B, client 1156 can process the data more quickly than client 3 160. One skilled inthe art will appreciate that no bandwidth control is necessary heresince the speed which packets are sent to a client is determined by howfast each client can handle the packets.

FIG. 6 is a flowchart diagram of the method operations for processingpackets received by a DSM dispatcher in accordance with one embodimentof the invention. The method initiates with operation 170 where a newpacket X′ is received by the DSM dispatcher. The method then advances tooperation 172 where an existing packet X, for which new packet X′ is theupdate, is located in the queue. Here, the queue is a shared fixed sizequeue such as the queue in FIGS. 5A and 5B. The method then moves todecision operation 174 where it is determined if any client pointers arepointing to packet X. If one or more client pointers are pointing topacket X, then the method advances to operation 176 where each of theclient pointers pointing to packet X is set to point at the packet belowpacket X. Thus, each client pointer is set to point at the most recentpacket in the queue that the corresponding client has received. If noneof the client pointers are pointing to packet X, then the methodproceeds from decision operation 174 to operation 178 where packet X ismoved to the top of the queue. For example packet D of the shared fixedsize queue of FIG. 5A would be moved to the top of the queue here.

The method of FIG. 6 then proceeds to operation 180 where packet X isreplaced with packet X′. Thus, the packets representing the latestupdates for the originating elements are kept in the queue.Additionally, the packets are stored in a time sorted fashion accordingto the time each packet is introduced into the queue. That is, as eachupdate for an existing packet is received, the existing packet is movedto the top of the queue and replaced by an updated packet. The updatedpacket remains at the top of the queue as it is the most recentlyreceived packet into the queue.

Thus, the DSM dispatcher is configured to send packets to clients withdifferent connection speeds at different frame rates. As illustrated inFIGS. 5A, 5B and 6, incoming packets replace packets that are already inthe queue. The replaced packets may or may not have been sent out to allclients. Depending on the relative speed of the clients and the speed atwhich the packets are coming in, a packet may be replaced after it hasbeen sent to a first client, but before it has been sent to a secondclient. This results in the first client having received both the oldand the new packet, while the second client will only receive the newpacket. Therefore, the second client will receive fewer packets over thesame period of time, which means it will have the slower frame rate.Referring to FIG. 5B, client 1, 156 has already received the outdatedversion of packet D and will receive new packet D 154. However, client 3160 receives only new packet D 154. In effect, client 3 receives onlythe newest copy of packet D, therefore, client 3 is associated with alower effective bandwidth because client 3 is slower. Consequently,there is no need to maintain any tables which must be accessed in orderto achieve different bandwidths for clients having differing performancecapacities.

The DSM dispatcher is configured to support easily adding new clients.In one embodiment the clients are enabled to construct a working defaultconfiguration. Here, after a new client is added, it is initializedusing a default configuration. The dispatcher creates a correspondingclient pointer that points below the last valid packet in the queue aswill be explained below with reference to FIG. 11. After a certainamount of time, all of the objects in the default configuration will bereplaced by their current versions through packets received from thedispatcher. Therefore, a current state of the set can be obtained from aDSM dispatcher without requesting additional data from the processsupplying the DSM dispatcher with packets. That is, there is no need tosupply a base image to the client. The DSM dispatcher is supplied withthe latest versions of each of the packets and by pointing a new clientat a bottom of the shared fixed size queue, each new client can initiateits own base image.

FIG. 7A is a simplified schematic diagram of the configuration of asection of the DSM dispatcher before sending a packet to a client inaccordance with one embodiment of the invention. Here, pointer P2associated with client 2 158 is pointing to packet E in the shared fixedsize queue of the DSM dispatcher. Thus, packet E 190 is the most recentpacket received by client 2. Once a signal is received by the DSMdispatcher that client 2 is ready to receive the next time sorted packetfrom the queue, the dispatcher will look up the client pointer andadvance it to point at the packet above packet E 190.

FIG. 7B is a simplified schematic diagram of the configuration of asection of the DSM dispatcher after sending a packet to a client inaccordance with one embodiment of the invention. Continuing from theexample discussed with reference to FIG. 7A, pointer P2 associated withclient 2 158 has been moved to point at packet C 192, i.e., the packetabove packet E. At the same time, packet C 192 is transmitted to client2 158. It should be appreciated that this process will repeat untilpointer P2 for client 2 158 points to the most recently received packetin the shared fixed size queue. That is, the process will continue untilthe pointer is pointing at the top packet of the queue.

FIG. 8 is a flowchart diagram of the method operations for sending apacket from the DSM dispatcher to a client in accordance with oneembodiment of the invention. The method initiates with operation 200where it is indicated that client N is ready to receive a packet. Itwill be apparent to one skilled in the art that the dispatcher can beconfigured to receive a signal from client N indicating that client N isready to receive a signal. The method then advances to operation 202where, in response to receiving the signal that client N is ready toreceive a packet, an existing packet X is located. Packet X is beingpointed at by a pointer associated with client N. The method thenproceeds to decision operation 204 where it is determined if packet X isthe most recent packet in the queue. If packet X is the most recentpacket in the queue, i.e., packet X is at the top of the queue, then themethod proceeds to operation 206. In operation 206, a signal is sentindicating that there are no packets to be sent and the method returnsto operation 200. It will be appreciated by one skilled in the art thata wait period can be built in here to define a time interval for waitingto check if client N is ready to receive a packet. The packets are sentout to each of the clients of the dispatcher asynchronously in oneembodiment of the invention.

Still referring to FIG. 8, if packet X is not the most recent packet inthe queue, i.e., packet X is not at the top of the queue, then themethod proceeds from decision operation 204 to operation 208. Inoperation 208, a packet Y is located, wherein packet Y is located abovepacket X in the shared fixed size queue. The method then moves tooperation 210 where packet Y is sent to client N and a pointerassociated with client N is set to point at packet Y. It should beappreciated that FIGS. 7A and 7B pictorially illustrate the methodoperations described herein with respect to FIG. 8.

FIG. 9 is a simplified schematic diagram of a DSM dispatcher having abandwidth control channel in accordance with one embodiment of theinvention. DSM dispatcher 150 receives packets 220 from packet servingprocess 224. Dispatcher 150 is capable of asynchronously distributingpackets 220 a-220 n to client 1 226 a-client n 226 n, respectively.Bandwidth control channel allows for a regulating protocol to beexecuted between dispatcher 150 and packet serving process 224. In oneembodiment, the regulating protocol enables dispatcher 150 to notifypacket serving process 224 to adjust a speed at which the packets arebeing delivered to the dispatcher.

Each client receives packets from the queue at its own pace (dependingon connection speed). Assuming different clients have differentconnection speeds, client latencies will gravitate toward differentaverage values. Therefore, a client with a fast connection will tend tohave a lower average latency, while a client with a slow connection willhave a higher average latency. As is generally known, all clientlatencies are inversely proportional to the incoming packet speed.

In effect, client latency is a value that can be quickly accessed andcan be used to measure speeds of client connections relative to theincoming packet speed. This information can be used to regulate therefresh rate of the packet-serving process. When appropriate,packet-serving process can increase or decrease the number of objectupdates which results in greater or fewer total number of packets sent.

Still referring to FIG. 9, if dispatcher 150 receives new packets inbursts, the period after the bursts gives each of the clients time tocatch up. Accordingly, all client pointers will eventually reach the topof the queue, unless the packets 220 a-220 n are coming in faster than aclient 226 a-226 n can receive them, i.e., an average incoming packetspeed is greater than that client's connection speed. Where a client ishaving difficulty catching up and the average latency for the clientexceeds a predefined threshold value, it would be necessary to notifypacket serving process 224 feeding packets 220 to slow down its refreshrate. For example, if packet serving process 224 is providing packets220 to dispatcher 150 at a rate of ten frames per second, which theclients are having difficulty in keeping up with, the dispatcher canrequest that the packet serving process provide the packets at 5 framesper second. After a certain time period the dispatcher can re-check theability of the clients to keep up with the modified rate and furthermodify the rate based upon the latencies of the clients. On the otherhand, if all the clients have a very easy time handling all the newpackets and their latencies are very small, the dispatcher may notifythe process feeding the packets to increase the frame rate. It will beapparent to one skilled in the art that the frame rate may be applicableto a slideshow where the slideshow incorporates an animated graphicsinterchange format (GIF) file.

In one embodiment, the packets can be grouped. That is a dispatcher canbe configured to send packets in groups rather than one by one. Here,packet grouping logic can be defined to allow for an enhancedpresentation of the image tiles. In a basic DSM dispatcher, grouping canbe done by time stamp or by index. With a time stamp, the packets aregrouped according to the time introduced into the DSM dispatcher.Alternatively, an index indicating the position of tiles of a slideshowcan be used as a reference to group packets. For example, since theborders of a presentation change the least while a middle sectioncontaining text changes the most, the location of the least changing ormost changing tiles can be determined by the index. Accordingly thetiles can be grouped. In a more advanced implementation, such as onethat is able to understand the format and content of the packets, morecomplex grouping algorithms may be implemented (e.g. adjacent imagetiles are grouped).

When sending groups of packets, an optimal range of the transmissionsizes will usually be chosen for each client, based on their connectionbandwidth, latency, frame rate, etc. Depending on the image tile sizes,compression method used, and consequent relative sizes of packets, theoptimal size can be described in the maximum and minimum optimal numberof packets. For example, the packets may be sent in groups less than orequal to n, but greater than n/2 (when possible). Table 1 belowillustrates one embodiment of how the packets are banded depending onthe number of packets in a group. This advanced method of transmissionmanagement can be used to achieve balance between client's bandwidth,latency and frame rate, or to optimize a dispatcher's outgoingtransmission rate by appropriating the transmission size to best fit theunderlying networking protocol. TABLE 1 Less than n/2 Combine group withnext, reconsider Between n/2 and n Send all packets in the group Greaterthan n Send first n packets in the group only

FIG. 10 is a flowchart diagram of the method operations performed by apacket serving process for maintaining an updateable set of image tileswith respect to a slideshow in accordance with one embodiment of theinvention. Here, as each screen of the slideshow is captured, the screenis divided into tiles using the same geometry each time. The new set oftiles is compared to the one captured prior to it, and non-matchingtiles are sent out to the dispatcher as updated packets. The methodinitiates with operation 230 where a tile pattern is defined. Forexample, a pattern for a set of tiles for a slideshow screen is definedhere. As will be explained in more detail below, the pattern can bedefined where each of the tiles in the set are equal in size, wherethere are differences between the sizes of each tile or some combinationthereof. It will be apparent to one skilled in the art that the definedpattern should stay consistent for each screen of the slide show tominimize processing.

Still referring to FIG. 10, the method advances to operation 232 where anew screen is captured. Here, a screen of a slideshow, such as aPOWERPOINT® presentation, is captured. The method then proceeds tooperation 234 where the new screen is subdivided into tiles according tothe pattern defined in operation 230. Here, the set of tiles is theoriginating set of tiles when the identified screen is the first screenof a slideshow. The method then moves to decision operation 236 where itis determined if the identified screen is a first screen. If theidentified screen is a first screen then the method proceeds tooperation 238 where the set of tiles is transmitted to the dispatcher.Here, the data from the first screen defines the originating set ofpackets in the shared fixed size queue of the dispatcher. The methodthen moves to operation 246 where the first set of tiles is stored asthe current set of tiles.

If the identified screen is not the first screen in decision operation236, then the method proceeds to operation 240 where each correspondingpair of tiles from the new screen and the previous set of tiles arecompared to identify differences. For example, a slideshow may use aconstant background but the tiles containing text may change from screento screen. The changing tiles between screens are identified here. Themethod then advances to operation 242 where the data corresponding tothe tiles identified as different in operation 242 are transmitted to adispatcher. Here, the updated packets to the originating set of packetsare sent to the dispatcher as described with reference to FIGS. 5A and5B. The method then advances to operation 244 where the previous set oftiles is discarded. One skilled in the art will appreciate that byreplacing the set of tiles from the previous screen with the set oftiles from the new screen allows for comparing successive screens, i.e.,comparing a second screen to a third screen and so on. The method theproceeds to operation 246 where the current set of tiles is stored. Inone embodiment the current set of tiles is stored in the shared fixedsize queue. The method then moves to decision operation 248 where it isdetermined if there are more screens. If the current screen is the lastscreen, then the method terminates. If the current screen is not thelast screen, then the method returns to operation 232 where the abovedescribed method is repeated. That is, as each screen is captured, it isdivided into tiles using the same geometry each time. The new set oftiles is compared to the one captured prior to it i.e., the previous setof tiles, and non-matching tiles are sent out to the dispatcher.

FIG. 11 is a simplified schematic diagram of a dispatcher implementationdata structure incorporating a doubly-linked list in accordance with oneembodiment of the invention. DSM dispatcher 150 includes shared fixedsize queue 152 having a set of objects. The set of objects of sharedfixed size queue 152 are configured as a doubly-linked list. One skilledin the art will appreciate that a doubly-linked list allows for movementof the objects in either an up or down direction, removal of an objectand to place the object at the top of shared fixed size queue 152. Inorder to determine a starting point and an endpoint for thedoubly-linked list a head and a tail are maintained. Last object 252 isthe tail while most recent object 250 points to object A, i.e., the topobject, which is the head. Last object 252 is not associated with anytiles, thus it will never be updated. Therefore last object 252 willremain at the bottom of shared fixed size queue 152. Accordingly, lastobject 252 is useful for adding new clients. For example, client 3 254is identified as a new client, then pointer P3 is created for client 3to point to last object 252. Thus, client 3 will receive each object inshared fixed size queue 152. Once pointer P3 is pointing to object A(the most recent object) client 3 will have received each of the objectsfrom shared fixed size queue 152.

FIG. 12 is a schematic diagram of a link object data structure used forobjects of FIG. 11 in accordance with one embodiment of the invention.Each of the objects include a time stamp, a packet containing the datafor a corresponding tile and data for the previous object (object below)and the next object (object above) in the queue. Thus, as a packet isreceived, the object holding a matching tile is located. The packetinside the object is replaced with the updated object and the object'stime stamp is updated to reflect the most recent value. As mentionedpreviously the object is pushed to the top of the queue, i.e., doublylinked list. When the time comes for a packet to be sent to a client,the object above the one pointed to by the client pointer is located,i.e., the next object. Then the packet inside the next object is sent tothe client once the client has indicated it is ready to receive the nextobject. In one embodiment, the object itself remains after the packethas been sent. That is, the client pointer is the only variable that isupdated as defined by the DSM dispatcher design.

Referring back to FIG. 11, the most recent object pointer is maintainedfor client latency calculations and also to allow easier movement ofupdated objects to the top of the queue. For example, bandwidth controlcan be implemented in accordance with the prototype of FIG. 11. Theaverage latency is calculated by averaging the client latency at themoment each k-th packet is received (k being a set positive integervalue, e.g. 10). If one of the clients maintains an average clientlatency that is below a pre-set value (e.g. number of tiles/10), or ifall the average client latencies maintain values above a differentthreshold (e.g. number of tiles/25), a bandwidth adjustment request issent to the capturing process, i.e., packet serving process. Dependingon the request, the capturing process captures screens at greater orsmaller intervals.

The clients receive the packets and extract the tiles accordingly. Thetiles are then incorporated into the output image, giving the client aview similar to the captured data. Because a DSM dispatcher is used, theclient is ensured to receive the most up-to-date tiles available whilemaintaining a frame rate that is related to the available bandwidth.

FIG. 13 is a simplified schematic diagram of an exemplary configurationof a system implementing the DSM dispatcher in accordance with oneembodiment of the invention. The packet serving process includes thecapture program for capturing the different screen of a slideshow.Computer 260 contains the slideshow to be dispatched. Server 262includes the code for executing the DSM dispatcher functions where thepackets are sent from the packet serving process to the DSM dispatcher.In turn, the DSM dispatcher assembles the packets in a shared fixed sizequeue for distribution to clients 266 a-266 n. It should be appreciatedthat the functionality of the packet serving process and the DSMdispatcher can be incorporated on one computer in one embodiment.Additionally, the code performing the functionality of the packetserving process and the DSM dispatcher can be hard coded onto asemiconductor chip. One skilled in the art will appreciate that thesemiconductor chip can include logic gates configured to provide thefunctionality discussed above. For example, a hardware descriptionlanguage (HDL) can be employed to synthesize the firmware and the layoutof the logic gates for providing the necessary functionality describedherein.

FIGS. 14A-14E provide exemplary diagrams of how tiles from consecutiveframes of a slideshow are received and placed into queue by the DSMdispatcher in accordance with on embodiment of the invention. For eachof FIGS. 14A-14E the left hand side of the figure represents image dataobtained by the capturing process. In this example, the image is dividedin 48 tiles for simplicity. Image tiles are named by their location onthe screen (x, y). It is assumed that image tiles are fed to the DSMdispatcher from bottom-right to top-left, row-by-row for exemplarypurposes here. The right hand side of each figure displays the tilesfrom the corresponding frame arranged in the shared fixed size queue.FIG. 14A is the first frame is the title frame of the presentation. Theentire image is sent over to the dispatcher and as a result a queue isformed starting from (0,0) and ending at (5,7). FIG. 14B is the secondframe of the presentation. Here, the top part of the slide has the samebackground as the last slide from FIG. 14A. Still, approximately aquarter of the image can be recycled from the previous slide: (0,0-7),(1,7) and (2,7). These tiles fall to the bottom of the list, (2,7) beingthe tile with the lowest time index. FIG. 14C is the third frame of thepresentation. The frame of FIG. 14C uses the same exact background asthe previous one, which means that a number of frames can be recycled,i.e., only the changed tiles are sent to the dispatcher to replace datain the queue. Tiles (0,0) and (0,7) are the only ones left intact from 2slides ago, so they fall to the bottom of the list. FIG. 14D is thefourth frame of the presentation. Here, an animated tile emerges fromthe bottom of the screen in this slide. This change is captured in tiles(5,6) and (5,7), while the remainder of the slide matches the previousone. Hence, only two of the 48 tiles are updated here. FIG. 14E is thefifth frame of the presentation. Here, the animation is finalized as theobject stops at the bottom left of the slideshow. This frame is capturedin tiles (4,6), (4,7), (5,6), and (5,7). It should be appreciated thatthe remaining tiles have not changed from the previous frame, therefore,only four tiles out of 48 need to be updated here.

The embodiment described herein can be incorporated with avideoconferencing system, particularly where a slideshow presentation isbeing transmitted to one or more clients. It will be apparent to oneskilled in that high resolution images that do not change significantlybetween frames can be received at a lower effective bandwidth withoutsacrificing performance, since only the portion of the images thatchange between successive frames are transmitted as described above.

In summary, the above described invention allows for a method and systemfor updating objects in a pre-defined set, such as tile images of aslide show presentation. A DSM dispatcher, that includes a shared fixedsize queue, enables the update of changed tiles of an image with minimalmemory requirements. Additionally, the DSM dispatcher is configured toinherently accommodate clients with different connection speeds bysupplying slower clients with a slower effective frame rate. Moreaggressive bandwidth control can be supplied through a bandwidth controlchannel. The DSM dispatcher can easily add new clients by creating acorresponding client pointer pointing below a last valid packet in theshared fixed size queue, without the need to store a base image.

With the above embodiments in mind, it should be understood that theinvention may employ various computer-implemented operations involvingdata stored in computer systems. These operations are those requiringphysical manipulation of physical quantities. Usually, though notnecessarily, these quantities take the form of electrical or magneticsignals capable of being stored, transferred, combined, compared, andotherwise manipulated. Further, the manipulations performed are oftenreferred to in terms, such as producing, identifying, determining, orcomparing.

The invention can also be embodied as computer readable code on acomputer readable medium. The computer readable medium is any datastorage device that can store data which can be thereafter read by acomputer system. Examples of the computer readable medium include harddrives, network attached storage (NAS), read-only memory, random-accessmemory, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes, and other optical andnon-optical data storage devices. The computer readable medium can alsobe distributed over a network coupled computer systems so that thecomputer readable code is stored and executed in a distributed fashion.

Although the foregoing invention has been described in some detail forpurposes of clarity of understanding, it will be apparent that certainchanges and modifications may be practiced within the scope of theappended claims. Accordingly, the present embodiments are to beconsidered as illustrative and not restrictive, and the invention is notto be limited to the details given herein, but may be modified withinthe scope and equivalents of the appended claims.

1. A method for updating a set of images for a presentation through asingle-buffered multipoint dispatcher over a network to multipleclients, comprising: dividing each screen of a set of screens includedin a presentation into tiles; storing packets respectively correspondingto the tiles of a first screen in a single buffered multipointdispatcher according to a time sorted hierarchy, wherein a top packethas a most recent time value and a bottom packet has a least recent timevalue; comparing each tile of the first screen with a corresponding tileof a second screen to identify any non-matching tile pairs; providing,for each non-matching tile of the second screen, a packet correspondingto that non-matching tile to the single buffered multipoint dispatcher;and replacing each packet corresponding to a non-matching tile of thefirst screen with the packet corresponding to the paired non-matchingtile of the second screen, while maintaining the time sorted hierarchy,wherein the replacing packets while maintaining the time sortedhierarchy supports clients with different connection speeds at differentframe rates.
 2. The method of claim 1, wherein the method operation ofstoring includes: placing the packets in a fixed size queue according toa time introduced into the single buffered multipoint dispatcher.
 3. Themethod of claim 1, wherein the method operation of providing includes:grouping multiple packets together to define a single packet to beprovided to the single buffered multipoint dispatcher.
 4. The method ofclaim 3, wherein the multiple packets are grouped according to a timestamp and an index.
 5. The method of claim 1, wherein in response toreplacing packets, the method includes: identifying a pointer pointingat one of the replaced packets; and moving the pointer to point at apacket below the one of the replaced packets.
 6. The method of claim 1,wherein the single buffered multipoint dispatcher includes a bandwidthcontrol channel configured to support a regulating protocol enabling thesingle buffered multipoint dispatcher to notify a process feeding thepackets to modify a delivery speed based upon a client latency.